 // 页面加载时执行
document.addEventListener('DOMContentLoaded', function() {
    // 初始化页面
    initPage();
});

// API地址
const API_URL = {
    vaccineRecords: '/api/vaccines/records'  // 获取疫苗接种记录API
};

// 初始化页面
async function initPage() {
    // 添加页面加载动画
    document.body.style.opacity = 0;
    setTimeout(() => {
        document.body.style.transition = 'opacity 0.3s ease-in';
        document.body.style.opacity = 1;
    }, 0);
    
    // 加载疫苗接种记录
    await loadVaccineRecords();
    
    // 添加重试按钮事件监听
    document.getElementById('retryButton')?.addEventListener('click', loadVaccineRecords);
}

// 加载疫苗接种记录
async function loadVaccineRecords() {
    // 显示加载状态
    showLoading(true);
    hideError();
    
    try {
        // 获取疫苗记录数据
        const vaccineData = await fetchVaccineRecords();
        
        // 渲染疫苗记录
        renderVaccineRecords(vaccineData);
        
        // 隐藏加载状态
        showLoading(false);
    } catch (error) {
        console.error('获取疫苗记录失败:', error);
        
        // 显示错误信息
        showError();
        showLoading(false);
    }
}

// 获取疫苗接种记录
async function fetchVaccineRecords() {
    try {
        const response = await fetch(API_URL.vaccineRecords, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json',
                'Accept': 'application/json'
            },
            credentials: 'include' // 包含cookies等凭证，用于身份验证
        });

        if (!response.ok) {
            if (response.status === 401 || response.status === 403) {
                // 未登录或权限不足，重定向到登录页
                window.location.href = '../login.html';
                throw new Error('未登录或无权限');
            }
            throw new Error('服务器响应异常: ' + response.status);
        }

        const result = await response.json();
        
        // 处理后端返回的标准R<T>格式响应
        if (result.code === 1 && result.data) {
            return result.data;
        } else {
            throw new Error(result.msg || '获取疫苗接种记录失败');
        }
    } catch (error) {
        console.error('API请求失败:', error);
        
        // 如果是网络错误或后端API未实现，返回模拟数据
        if (error.message.includes('Failed to fetch') || 
            error.message.includes('服务器响应异常')) {
            console.log('使用模拟数据');
            return getMockVaccineData();
        }
        
        throw error;
    }
}

// 渲染疫苗接种记录
function renderVaccineRecords(records) {
    const recordsContainer = document.getElementById('vaccineRecords');
    recordsContainer.innerHTML = ''; // 清空容器
    
    if (!records || records.length === 0) {
        // 无数据时显示提示信息
        recordsContainer.innerHTML = `
            <div class="no-data">
                <i class="fas fa-info-circle"></i>
                <span>暂无疫苗接种记录</span>
            </div>
        `;
        return;
    }
    
    // 按疫苗类型分组记录
    const groupedRecords = groupVaccinesByType(records);
    
    // 渲染每个疫苗类型的卡片
    for (const vaccineType in groupedRecords) {
        const vaccineGroup = groupedRecords[vaccineType];
        
        // 创建疫苗卡片
        const vaccineCard = document.createElement('div');
        vaccineCard.className = 'vaccine-card';
        
        // 计算疫苗状态
        const status = calculateVaccineStatus(vaccineGroup);
        
        // 渲染疫苗头部信息
        vaccineCard.innerHTML = `
            <div class="vaccine-header">
                <h3>${vaccineType}</h3>
                <span class="vaccine-status ${status.className}">${status.text}</span>
            </div>
            <div class="vaccine-details">
                ${renderDoses(vaccineGroup)}
            </div>
        `;
        
        // 添加到容器
        recordsContainer.appendChild(vaccineCard);
    }
}

// 按疫苗类型分组记录
function groupVaccinesByType(records) {
    const grouped = {};
    
    records.forEach(record => {
        if (!grouped[record.vaccine_name]) {
            grouped[record.vaccine_name] = [];
        }
        grouped[record.vaccine_name].push(record);
    });
    
    // 对每组内的记录按日期排序
    for (const type in grouped) {
        grouped[type].sort((a, b) => {
            // 已接种的按实际日期排序
            if (a.vaccination_date && b.vaccination_date) {
                return new Date(a.vaccination_date) - new Date(b.vaccination_date);
            }
            // 待接种的放在最后
            if (!a.vaccination_date) return 1;
            if (!b.vaccination_date) return -1;
            return 0;
        });
    }
    
    return grouped;
}

// 计算疫苗接种状态
function calculateVaccineStatus(vaccineGroup) {
    // 检查是否所有剂次都已接种
    const allDosesCompleted = vaccineGroup.every(record => record.status === '已接种');
    // 检查是否有待接种的剂次
    const hasUpcomingDoses = vaccineGroup.some(record => record.status === '待接种');
    
    if (allDosesCompleted) {
        return { text: '已完成', className: 'completed' };
    } else if (hasUpcomingDoses) {
        return { text: '待接种', className: 'upcoming' };
    } else {
        return { text: '进行中', className: 'in-progress' };
    }
}

// 渲染疫苗剂次信息
function renderDoses(doses) {
    return doses.map(dose => {
        if (dose.status === '已接种') {
            return `
                <div class="dose">
                    <span class="dose-number">${dose.dose_number || '单剂次'}</span>
                    <span class="dose-date">${formatDate(dose.vaccination_date)}</span>
                    <span class="dose-manufacturer">${dose.manufacturer || ''}</span>
                </div>
            `;
        } else {
            return `
                <div class="dose upcoming-dose">
                    <span class="dose-number">${dose.dose_number || '单剂次'}</span>
                    <span class="dose-date">预约时间：${formatDate(dose.appointment_date)}</span>
                </div>
            `;
        }
    }).join('');
}

// 日期格式化
function formatDate(dateStr) {
    if (!dateStr) return '未确定';
    
    try {
        const date = new Date(dateStr);
        return date.toISOString().split('T')[0]; // 返回YYYY-MM-DD格式
    } catch (e) {
        return dateStr; // 如果解析失败，返回原始字符串
    }
}

// 显示/隐藏加载状态
function showLoading(show) {
    const spinner = document.getElementById('loadingSpinner');
    if (spinner) {
        spinner.style.display = show ? 'flex' : 'none';
    }
}

// 显示错误信息
function showError() {
    const errorMessage = document.getElementById('errorMessage');
    if (errorMessage) {
        errorMessage.style.display = 'flex';
    }
}

// 隐藏错误信息
function hideError() {
    const errorMessage = document.getElementById('errorMessage');
    if (errorMessage) {
        errorMessage.style.display = 'none';
    }
}

// 获取模拟数据（仅用于API不可用时）
function getMockVaccineData() {
    return [
        {
            vaccine_id: 1,
            vaccine_name: '新冠疫苗',
            dose_number: '第一剂',
            status: '已接种',
            vaccination_date: '2023-06-15',
            manufacturer: '科兴生物',
            batch_number: 'CZ202305001',
            vaccine_site: '市中心医院'
        },
        {
            vaccine_id: 2,
            vaccine_name: '新冠疫苗',
            dose_number: '第二剂',
            status: '已接种',
            vaccination_date: '2023-07-15',
            manufacturer: '科兴生物',
            batch_number: 'CZ202306002',
            vaccine_site: '市中心医院'
        },
        {
            vaccine_id: 3,
            vaccine_name: '新冠疫苗',
            dose_number: '第三剂',
            status: '已接种',
            vaccination_date: '2024-01-15',
            manufacturer: '科兴生物',
            batch_number: 'CZ202312003',
            vaccine_site: '市中心医院'
        },
        {
            vaccine_id: 4,
            vaccine_name: '流感疫苗',
            dose_number: '年度接种',
            status: '待接种',
            appointment_date: '2024-04-20',
            vaccination_date: null,
            manufacturer: null,
            batch_number: null,
            vaccine_site: '社区医疗中心'
        },
        {
            vaccine_id: 5,
            vaccine_name: '乙肝疫苗',
            dose_number: '第一剂',
            status: '已接种',
            vaccination_date: '2023-03-10',
            manufacturer: '默沙东',
            batch_number: 'HB202303001',
            vaccine_site: '市妇幼保健院'
        },
        {
            vaccine_id: 6,
            vaccine_name: '乙肝疫苗',
            dose_number: '第二剂',
            status: '已接种',
            vaccination_date: '2023-04-10',
            manufacturer: '默沙东',
            batch_number: 'HB202304002',
            vaccine_site: '市妇幼保健院'
        }
    ];
}